import pymysql
# 封装数据库工具类
class DButli(object):
    # 添加类属性
    conn=None
    # 建立连接
    @classmethod
    def __get_conn(cls):
        # 判断conn是否为空,如果是在创建
        if cls.conn is None:
           cls.conn=pymysql.connect(host="",port=3306,user="",password="",
                             database="",charset="utf8")
        # 返回非空连接
        return cls.conn
    # 关闭连接
    @classmethod
    def __close_conn(cls):
        # 判断conn不为空,需要关闭
        if cls.conn is not None:
           cls.conn.close()
           cls.conn=None
    # 查询
    @classmethod
    def select_one(cls,sql):
        cursor=None
        resp=None
        try:
            # 获取连接
            cls.conn=cls.__get_conn()
            # 获取游标
            cursor=cls.conn.cursor()
            # 执行查询语句
            cursor.execute(sql)
            # 提取一条结果
            resp=cursor.fetchone()
        except Exception as err:
            print("发生错误",str(err))
        finally:
              # 关闭游标
            cursor.close()
              # 关闭连接
            cls.__close_conn()
              # 返回结果
            return resp
    # 增删改
    @classmethod
    def uid(cls,sql):
        resp=None
        cursor=None
        try:
            # 建立连接
            cls.conn = cls.__get_conn()
            # 获取游标
            cursor=cls.conn.cursor()
            # 执行增删改语句
            resp= cursor.execute(sql)
            # 提交事务
            cls.conn.commit()
        except Exception as err:
            # 回滚事务
            cls.conn.rollback()
            print("发生了错误",str(err))
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_conn()
            # 返回结果
            return resp
